/*
 * Copyright (c) 2018.
 * http://www.ulabcare.com
 */

package com.mt.roll.upms.service;

import com.mt.roll.upms.params.SysOrgParam;
import com.mt.roll.core.params.EnabledParam;
import com.mt.roll.core.params.IdListParam;
import com.mt.roll.core.params.IdParam;
import com.mt.roll.core.vo.IdListVo;
import com.mt.roll.core.vo.IdVo;
import com.mt.roll.core.vo.PageVo;
import com.mt.roll.core.vo.R;
import com.mt.roll.upms.params.SysOrgQueryParam;
import com.mt.roll.upms.vo.SysOrgVo;

import java.util.List;

/**
 * 组织服务接口
 *
 * @author jiff
 * @date 2018/11/9
 * @since 1.0
 */
public interface OrgService {
    /**
     * 获取组织
     *
     * @param idParam 主键参数
     * @return 组织
     */
    R<SysOrgVo> get(IdParam idParam);

    /**
     * 获取组织列表
     *
     * @param sysOrgQueryParam 组织查询参数
     * @return 组织列表
     */
    R<List<SysOrgVo>> list(SysOrgQueryParam sysOrgQueryParam);

    /**
     * 获取组织分页列表
     *
     * @param sysOrgQueryParam 组织查询参数
     * @return 组织分页列表
     */
    R<PageVo<SysOrgVo>> page(SysOrgQueryParam sysOrgQueryParam);

    /**
     * 获取组织树列表
     *
     * @param sysOrgQueryParam 组织查询参数
     * @return 组织树列表
     */
    R<List<SysOrgVo>> tree(SysOrgQueryParam sysOrgQueryParam);

    /**
     * 新增组织
     *
     * @param sysOrgParam 组织参数
     * @return 主键
     */
    R<IdVo> add(SysOrgParam sysOrgParam);

    /**
     * 更新组织
     *
     * @param sysOrgParam 组织参数
     * @return 主键
     */
    R<IdVo> update(SysOrgParam sysOrgParam);

    /**
     * 启用停用
     *
     * @param enabledParam 启停参数
     * @return 主键
     */
    R<IdVo> enabled(EnabledParam enabledParam);

    /**
     * 删除组织
     *
     * @param idParam 主键参数
     * @return 主键
     */
    R<IdVo> delete(IdParam idParam);

    /**
     * 批量删除组织
     *
     * @param idListParam 主键列表参数
     * @return 主键列表
     */
    R<IdListVo> delete(IdListParam idListParam);
}
